위에서 operator*를 멤버함수로 정의하였다.
위 같이 멤버로 선언한 operator*에 대하여 Rational과 int 연산은 교환법칙이 성립되지 않는다.
result=oneHalf 와 result=2*oneHalf 연산은 내부적으로 아래와 같다.
정수 int.operator* 멤버 함수는 존재하지 않는다.
Rational을 explicit으로 선언하지 않았기 때문에 Rational(2)는 객체를 생성한다.
호출되는 멤버함수를 갖고 있는 객체(this)에 대해서는 암시적 변환을 허용하지 않는다.
혼합형 수치 연산을 지원하고 싶은 경우, operator*를 비멤버 함수로 선언해 주어야 한다.